﻿using Autofac;
using Autofac.Integration.Mvc;
using System.Reflection;
using System.Web.Mvc;

namespace QG.FrontDesk.com
{
    public class AutofacConfig
    {
        public static void Register() {
            // 创建一个容器
            var builder = new ContainerBuilder();
            //告诉Autofac框架，将来要创建的控制器类存放在哪个程序集 (UI),从当前运行的bin目录下加载程序集
            Assembly controllerAss = Assembly.Load("QG.FrontDesk.com");
            builder.RegisterControllers(controllerAss);

            //告诉autofac框架注册数据仓储层所在程序集中的所有类的对象实例
            Assembly respAss = Assembly.Load("QG.FrontDesk.DAL");
            //以接口形式保存被创建类的对象实例
            builder.RegisterTypes(respAss.GetTypes()).AsImplementedInterfaces();

            //告诉autofac框架注册业务逻辑层所在程序集中的所有类的对象实例
            Assembly serpAss = Assembly.Load("QG.FrontDesk.BLL");
            //以接口形式保存被创建类的对象实例
            builder.RegisterTypes(serpAss.GetTypes()).AsImplementedInterfaces();

            //创建一个Autofac的容器
            var container = builder.Build();
            //移除原本的mvc的容器，使用AutoFac的容器，将MVC的控制器对象实例交由autofac来创建
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));           

        }
    }
}